//########### ("C:\ChipONCC\examples")ļisr_push_stk_fun.h & isr_push_stk_fun.c
 
//!!!!!! жеúʱôĺҪв
//!!!!!! ռöRAMַжϴ룬жӦļʱԻܵӰ
//!!!!!! ѹջںʵĵطãӶʵʹҪѹջжִпٽ˳
//##################################  ݵ  "isr_push_stk_fun.h"
//!!!!!! ֧жϺⲿͬʱһ߼ԶͬʱУǶջḺ̶́ͳһRAMַư˳ȡȲ
//1жļнȫֱ  ,溯õĲ
//  ʹSTK00~STK11ΪݣݾʹõĿɽԪشСĵ
//  ҪȷʵʱĿһ¡̵

#ifndef  ISR_PUSH_STK_FUN_H
#define  ISR_PUSH_STK_FUN_H
	void  H_ISR_PUSH_STK();
	void  H_ISR_POP_STK();

	void  L_ISR_PUSH_STK();
	void  L_ISR_POP_STK();

	#define  H_STKSAVECOUNT	12
	#define  L_STKSAVECOUNT	12		//  ʾʹΪSTK6,0~6ӦΪ7
	extern 	volatile unsigned char   H_STKBUFFED[H_STKSAVECOUNT];
	extern 	volatile unsigned char   L_STKBUFFED[L_STKSAVECOUNT];
#endif						

//##################################  ݵ "isr_push_stk_fun.c"
//##################################  ߼жϵС 
#include "isr_push_stk_fun.h"

volatile unsigned char   H_STKBUFFED[H_STKSAVECOUNT];		//  CǶֻ࣬ȫֱʹǰ׺"_"
volatile unsigned char   L_STKBUFFED[L_STKSAVECOUNT];

//2жʹôǰѹջ
	void  H_ISR_PUSH_STK()
	{
		__asm

			.define  usebuffed_Pu	_H_STKBUFFED		;// Ը߼ж0x04ڣԵͼж0x14ڱʹ   _L_STKBUFFED
		.if H_STKSAVECOUNT>0
			BANKSEL  STK00
			MOV R0,STK00
			BANKSEL  usebuffed_Pu
			MOV usebuffed_Pu+0,R0
		.endif

		__endasm;

	}
//3жϴóջ

	void  H_ISR_POP_STK()
	{
		__asm
			.define  usebuffed_Po	_H_STKBUFFED		;// Ը߼ж0x04ڣԵͼж0x14ڱʹ   _L_STKBUFFED
		.if H_STKSAVECOUNT>0
			BANKSEL  usebuffed_Po
			MOV R0,	usebuffed_Po+0
			BANKSEL  STK00
			MOV STK00,R0
			.endif
		__endasm;
	}
